package com.example.exam001.vo;

import java.util.HashMap;
import java.util.Map;

/**
 * 通用的响应结构类
 */
public class R {
    // 定义成功的状态码
    public static final Integer SUCCESS_CODE = 200;
    // 定义成功的消息
    public static final String SUCCESS_MESSAGE = "success";
    // 定义错误的状态码
    public static final Integer ERROR_CODE = -1;
    // 定义错误的消息
    public static final String ERROR_MESSAGE = "error";

    /**
     * 创建一个成功的响应，不包含数据
     * @return 包含成功状态码和成功消息的Map
     */
    public static Map<String, Object> success() {
        return new HashMap<>() {{
            put("code", SUCCESS_CODE);
            put("message", SUCCESS_MESSAGE);
        }};
    }

    /**
     * 创建一个成功的响应，包含数据
     * @param data 需要返回的数据
     * @return 包含成功状态码，成功消息和数据的Map
     */
    public static Map<String, Object> success(Object data) {
        return new HashMap<>(){{
            putAll(success());
            put("data", data);
        }};
    }


    public static Map<String, Object> byStatus(boolean status){
        return status ? success() : error();
    }

    /**
     * 创建一个错误的响应
     * @return 包含错误状态码和错误消息的Map
     */
    public static Map<String, Object> error() {
        return new HashMap<>() {{
            put("code", ERROR_CODE);
            put("message", ERROR_MESSAGE);
        }};
    }
}
